跳到主要内容

Julia 参数构造函数

阐述

对于含参数的复合类型,默认情况下它具备

与通常情况相同,如果提供新的内构造方法,则原有构造方法被覆盖。自定义的构造方法有两种选择:

  • 指定类型的内构造方法,此时与默认的语义类似
  • 不指定类型的内构造方法,但是用 new{T}() 语法来在创建实例时指定类型

实例

默认情况

若不显示提供构造函数,则默认生成的构造函数类似于以下定义:

julia> struct Point{T<:Real}
x::T
y::T
Point{T}(x,y) where {T<:Real} = new(x,y)
end

julia> Point(x::T, y::T) where {T<:Real} = Point{T}(x,y);

在这个定义下,调用指定类型的内构造函数(只要实参能合法转换为 T)是合法的,调用不指定类型的外构造函数(必须用两个同类型的实参)也是合法的。

不指定类型的内构造方法

struct SummedArray{T<:Number,S<:Number}
data::Vector{T}
sum::S
function SummedArray(a::Vector{T}) where T
S = widen(T)
new{T,S}(a, sum(S, a))
end
end

它可以用于保证多个类型之间具有一定的联系。

性质

相关内容

参考文献